iterator adapter
Iterator traitが生やしているmethodのことをこう呼ぶらしい
/mrsekut-book-4873118557/346 (15.3 イテレータアダプタ)
#wip
個々のiterator adapterはiteratorを返すだけで何か処理をするわけではない
チェーンした最後のiteratorに対してnext()が呼び出されて初めて処理が実行される
最後にcollect()を呼べば、内部でnext()も実行される
例えばこのコードを書いても何も起きない
code:rs
"earth", "water", "air", "fire".iter().map(|elt| println!("{}", elt));
map
filter
filter_map
削除もできるmap
クロージャの返り値はOption
Noneなら削除
/mrsekut-book-4873118557/350
flat_map
/mrsekut-book-4873118557/351
scan
/mrsekut-book-4873118557/352 (15.3.3 scan)
hsのscanl
take
/mrsekut-book-4873118557/353 (15.3.4 takeとtake while)
take_while
/mrsekut-book-4873118557/353 (15.3.4 takeとtake while)
skip
/mrsekut-book-4873118557/353 (15.3.4 takeとtake while)
hsのdrop相当
skip_while
/mrsekut-book-4873118557/353 (15.3.4 takeとtake while)
hsのdropWhile相当
chain
2つのiteratorを繋げる
/mrsekut-book-4873118557/358 (15.3.10 chain)
enumerate
/mrsekut-book-4873118557/359 (15.3.11 enumerate)
indexを与える
zip, unzip
/mrsekut-book-4873118557/359 (15.3.11 enumerate)
hsのzip, unzipと同じ
2つのiteratorを1つのiteratorにする
cycle
/mrsekut-book-4873118557/362 (15.3.15 cycle)
Clone traitを実装してる必要がある
hsのcycle相当
いいねmrsekut.icon
cloned
/mrsekut-book-4873118557/361 (15.3.4 cloned)
参照を生成するiteratorに対して、生成された参照から値をクローンして生成するiteratorを返す
Clone traitを実装してる必要がある
by_ref
/mrsekut-book-4873118557/360 (15.3.13 by ref)
iteratorに対する可変参照を借用する
peekable
/mrsekut-book-4873118557/354 (15.3.6 peekable)
fuse
/mrsekut-book-4873118557/355 (15.3.7 fuse)
Noneが来たらNoneを返すようにする
inspect
/mrsekut-book-4873118557/357 (15.3.9 inspect)
print debugに使ったりする
チェーンの途中経過を見たりする